// 题目描述
// 28. 找出字符串中第一个匹配项的下标
// 简单
// 2K
// 给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标（下标从 0 开始）。如果 needle 不是 haystack 的一部分，则返回  -1 。
//   示例 1：
// 输入：haystack = "sadbutsad", needle = "sad"
// 输出：0
// 解释："sad" 在下标 0 和 6 处匹配。
// 第一个匹配项的下标是 0 ，所以返回 0 。
// 示例 2：
// 输入：haystack = "leetcode", needle = "leeto"
// 输出：-1
// 解释："leeto" 没有在 "leetcode" 中出现，所以返回 -1 。
//   提示：
// 1 <= haystack.length, needle.length <= 104
// haystack 和 needle 仅由小写英文字符组成
// 通过次数
// 910.9K
// 提交次数
// 2.1M
// 通过率
// 42.8%
// https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string

/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function (haystack, needle) {
  const n = haystack.length
  const targetLength = needle.length

  let [left, right] = [0, 0]
  while (right < n) {
    ++right

    if (targetLength === right - left) {
      if (haystack.slice(left, right) === needle) {
        return left
      }

      ++left
    }
  }

  return -1
}

console.log(
  strStr(
    "leetcode",
    "leeto"
  )
)
